<?php

namespace examples\models;

use ORM\Model;

class User extends Model {
    /**
     * 表名（可选，默认为类名小写加s）
     */
    protected $table = 'users';
    
    /**
     * 可填充的属性
     */
    protected $fillable = ['name', 'email', 'password', 'created_at', 'updated_at'];
    
    /**
     * 隐藏的属性（不会被序列化）
     */
    protected $hidden = ['password'];
    
    /**
     * 属性类型转换
     */
    protected $casts = [
        'created_at' => 'datetime',
        'updated_at' => 'datetime'
    ];
    
    /**
     * 用户的文章（一对多关系）
     */
    public function posts() {
        return $this->hasMany('examples\\models\\Post', 'user_id');
    }
    
    /**
     * 用户的个人资料（一对一关系）
     */
    public function profile() {
        return $this->hasOne('examples\\models\\Profile', 'user_id');
    }
    
    /**
     * 用户的角色（多对多关系）
     */
    public function roles() {
        return $this->belongsToMany('examples\\models\\Role', 'user_role', 'user_id', 'role_id');
    }
    
    /**
     * 密码属性的修改器
     */
    public function setPasswordAttribute($value) {
        return password_hash($value, PASSWORD_DEFAULT);
    }
    
    /**
     * 验证密码
     */
    public function verifyPassword($password) {
        return password_verify($password, $this->password);
    }
}